// pages/edit-avatar/edit-avatar.ts
import { uploadFile } from '../../../api/upload.js';
import { userEdit } from '../../../api/user.js';
import userManager from '../../../utils/userManager.js';

Page({
  data: {
    currentAvatar: '',
    currentAvatarType: 'text', // 'image' 或 'text'
    selectedAvatar: '',
    uploadedAvatarUrl: '', // 上传后的服务器URL
  },

  onLoad() {
    // 从缓存加载当前头像信息
    const avatarInfo: any = userManager.getUserAvatarOrInitial();
    this.setData({
      currentAvatar: avatarInfo?.value || '',
      currentAvatarType: avatarInfo?.type || 'text'
    });
  },

  chooseImage() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 检查文件大小
        wx.getFileInfo({
          filePath: tempFilePath,
          success: (fileRes) => {
            if (fileRes.size > 5 * 1024 * 1024) {
              wx.showToast({
                title: '图片大小不能超过5MB',
                icon: 'none',
              });
              return;
            }
            
            // 显示选中的图片
            this.setData({ selectedAvatar: tempFilePath });
            
            // 立即上传
            this.uploadAvatar(tempFilePath);
          },
        });
      },
    });
  },

  // 上传头像到服务器
  async uploadAvatar(filePath: string) {
    try {
      wx.showLoading({ title: '上传中...' });
      
      // 使用产品图片场景上传（可以根据实际需要调整scene）
      const res = await uploadFile(filePath, 'product_image', (progress: number) => {
        console.log('上传进度:', progress);
      });
      
      wx.hideLoading();
      
      if (res.code === 200 && res.data) {
        // 保存上传后的URL
        const avatarUrl = res.data.url || res.data.src;
        this.setData({
          uploadedAvatarUrl: avatarUrl
        });
        
        wx.showToast({
          title: '上传成功',
          icon: 'success'
        });
      } else {
        throw new Error(res.msg || '上传失败');
      }
    } catch (error: any) {
      wx.hideLoading();
      console.error('上传头像失败:', error);
      
      wx.showToast({
        title: typeof(error) === 'string' ? error : (error?.msg || '上传失败，请重试'),
        icon: 'none'
      });
      
      // 清空选择
      this.setData({
        selectedAvatar: '',
        uploadedAvatarUrl: ''
      });
    }
  },

  // 提交修改
  async submitAvatar() {
    if (!this.data.uploadedAvatarUrl) {
      wx.showToast({
        title: '请先上传头像',
        icon: 'none',
      });
      return;
    }

    try {
      wx.showLoading({ title: '保存中...' });
      
      // 调用修改用户信息接口
      const res = await userEdit({
        avatar: this.data.uploadedAvatarUrl
      });
      
      wx.hideLoading();
      
      if (res.status === 200) {
        // 头像修改成功，刷新用户信息
        await userManager.refreshAfterUpdate('头像修改');
        
        wx.showToast({
          title: '头像修改成功',
          icon: 'success',
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        throw new Error(res.msg || '修改失败');
      }
    } catch (error: any) {
      wx.hideLoading();
      console.error('修改头像失败:', error);
      
      wx.showToast({
        title: typeof(error) === 'string' ? error : (error?.msg || '修改失败，请重试'),
        icon: 'none'
      });
    }
  },
});

